package com.itx.gatewayx.service;

import com.itx.gatewayx.domain.dto.LoginDTO;
import com.itx.gatewayx.domain.vo.LoginVO;
import reactor.core.publisher.Mono;

/**
 * 认证服务接口
 *
 * @author itx
 */
public interface IAuthService {
    
    /**
     * 用户登录
     *
     * @param loginDTO 登录信息
     * @return 登录结果
     */
    Mono<LoginVO> login(LoginDTO loginDTO);
    
    /**
     * 用户登出
     *
     * @param token 令牌
     * @return 结果
     */
    Mono<Boolean> logout(String token);
    
    /**
     * 刷新令牌
     *
     * @param refreshToken 刷新令牌
     * @return 新的令牌
     */
    Mono<LoginVO> refreshToken(String refreshToken);
    
    /**
     * 生成验证码
     *
     * @return 验证码信息
     */
    Mono<String> generateCaptcha();
    
    /**
     * 验证令牌
     *
     * @param token 令牌
     * @return 验证结果
     */
    Mono<Boolean> verifyToken(String token);
} 